//
//  Extension+NSDate.swift
//  WLLWeibo
//
//  Created by 王乐乐 on 16/8/15.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit
/// 时间格式化
private let df = NSDateFormatter()
/// 日历类
let calendar = NSCalendar.currentCalendar()

extension NSDate{
    /**
     计算微博日期
     */
   class func getSinaDate(createAt:String) -> NSDate {
       //class 代表类方法
        //设置格式  Mon Aug 15 16:17:50 +0800 2016
        df.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        //本地化
        df.locale = NSLocale(localeIdentifier: "en_US")
        //新浪微博时间 -->unexpectedly found nil while unwrapping an Optional value 是因为上面的格式大小写有问题,导致强行解包失败
        let sinaDate = df.dateFromString(createAt)!
        //强行解包
        return sinaDate
    }

        /// 得到微博时间格式化后的字符串
    var sinaDateDescription:String {
        //是否是今年
        let isThisYear = sinaIsThisYear(self)
        if isThisYear {//是今年
            //如果是今天
            if calendar.isDateInToday(self) {
                //当前时间和微博时间求差
                let s =  Int(NSDate().timeIntervalSinceDate(self))
                
                if s<60 {
                    return "刚刚"
                }else if s>=60 && s<3600 {
                    return "\(s/60)分钟前"
                }else {
                    return "\(s/3600)小时前"
                }
            }else if calendar.isDateInYesterday(self){
                // 如果是昨天 2014年06月14日 20:20:20 显示 昨天 20:20
                df.dateFormat = "昨天 HH:mm"
            }else{
                df.dateFormat = "MM 月 dd 日 HH:mm"
            }
            
            
        }else{//不是几年
            df.dateFormat = "yyyy年MM月dd日 HH:mm"
        }
        
         return df.stringFromDate(self)
        
    }
    
    
    /**
     判断是否是今年
     */
    func sinaIsThisYear(sinaDate:NSDate) -> Bool {
        //设置格式
         df.dateFormat  = "yyyy"
//        本地化
        df.locale = NSLocale(localeIdentifier: "en_US")
        //微博时间字符串
        let sinaYearStr = df.stringFromDate(sinaDate)
        //当前时间
        let currentYearStr = df.stringFromDate(NSDate())
        
        return sinaYearStr == currentYearStr
    }
    
    
}



















